package com.excesys.exsecs.energy.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * @author liuzhikun
 * @title: DeviceOnlineInfoDTO
 * @projectName pig
 * @description: 在线设备表
 * @date 2023/5/1217:39
 */

@Data
@Schema(description = "在线设备表")
public class DeviceOnlineInfoDTO {

	/**
	 * 设备编号;设备编号
	 */
	@TableId(type = IdType.ASSIGN_ID)
	@Schema(description = "设备编号")
	private String deviceNo;

	/**
	 * 设备位置编码;设备位置编码
	 */
	@Schema(description = "设备位置编码")
	private String unitNo;

	/**
	 * 资产编号
	 */
	@Schema(description = "资产编号")
	private String assetsId;

	/**
	 * 设备名称
	 */
	@Schema(description = "设备名称")
	// 修复禅道361编号：设备名称模糊查询无法查询的bug
	@TableField(value = "device_name", condition = SqlCondition.LIKE)
	private String deviceName;

	/**
	 * 设备类型编码
	 */
	@Schema(description = "设备型号编码")
	private String devType;

	/**
	 * 设备sn码
	 */
	@Schema(description = "设备sn码")
	private String unitsn;

	/**
	 * 设备型号
	 */
	@Schema(description = "设备类型编码")
	@TableField(value = "unmodel", condition = SqlCondition.LIKE)
	private String unmodel;

	/**
	 * 安装位置id/区域id
	 */
	@Schema(description = "安装位置id/区域id")
	@TableField(value = "placeno", condition = SqlCondition.LIKE)
	private String placeno;

	/**
	 * 安装位置描述
	 */
	@Schema(description = "安装位置描述")
	private String placeremark;

	/**
	 * 设备位置父id
	 */
	@Schema(description = "设备位置父id")
	private String parunitno;

	/**
	 * 上线时间
	 */
	@Schema(description = "上线时间")
	private LocalDateTime onlinedate;

	/**
	 * 在线离线状态：0离线，1在线
	 */
	@Schema(description = "在线离线状态：0离线，1在线")
	private Integer onlineStatus;

	/**
	 * 最后一次上线时间
	 */
	@Schema(description = "最后一次上线时间")
	private LocalDateTime lastdate;

	/**
	 * 故障状态,可能有多种故障，所以可以考虑按bit来标识每种故障
	 */
	@Schema(description = "故障状态,可能有多种故障，所以可以考虑按bit来标识每种故障")
	private Integer errorStatus;

	/**
	 * 工作状态，0-关机 1-开机 2-故障
	 */
	@Schema(description = "工作状态，0-关机 1-开机 2-故障")
	private Integer workingStatus;

	/**
	 * 最后一次清能时间
	 */
	@Schema(description = "最后一次清能时间")
	private LocalDateTime lastcleartime;

	/**
	 * 清能次数
	 */
	@Schema(description = "清能次数")
	private Integer lastcleartimes;

	/**
	 * 通讯协议类别 modbus rtu tcp http
	 */
	@Schema(description = "通讯协议类别 modbus rtu  tcp http")
	private String communicationProtocol;

	/**
	 * 所属系统编码：空调、视频、消防
	 */
	@Schema(description = "所属系统编码：空调、视频、消防")
	private String modelType;

	/**
	 * 默认1未配置在线设备
	 */
	@Schema(description = "默认1未配置在线设备")
	private Integer ifconfig;

	/**
	 * 设备安装坐标：x,y,z
	 */
	@Schema(description = "设备安装坐标：x,y,z")
	private String deviceCoord;

	/**
	 * 下位设备通道号
	 */
	@TableField(exist = false)
	@Schema(description = "下位设备通道号")
	private String deviceChannelId;

	/**
	 * 流水设定时间
	 */
	@Schema(description = "流水设定时间")
	private String flowSetTime;

	/**
	 * 网关设备位置编码
	 */
	@Schema(description = "网关设备位置编码")
	private String gatewayUnitNo;

	/**
	 * 楼栋编码
	 */
	@Schema(description = "楼栋编码")
	private String buildingCode;

	/**
	 * 楼层编码
	 */
	@Schema(description = "楼层编码")
	private String floorCode;

	/**
	 * 区域编码
	 */
	@Schema(description = "区域编码")
	private String areaCode;

	/**
	 * 过滤设备编码，用于该设备
	 */
	@Schema(description = "过滤设备")
	private String filterDeviceNos;

	@Schema(description = "外机编码")
	private String controlUnitNo;

	@Schema(description = "设定温度")
	private String settingTemperature;

	@Schema(description = "通道单位")
	private String channelUnit;

}